1
Естественный синтаксис: философия перегрузки операторов
AI037Lesson 17
00:00

Философия Естественный синтаксис утверждает, что пользовательские типы должны вести себя как первоклассные граждане. При реализации перегрузки операторов, мы позволяем классам использовать стандартную нотацию (например, + или ==), что снижает когнитивную нагрузку и соответствует принципу наименьшего удивления.

1. Анатомия и маршрутизация

Оператор — это функция с особым именем: ключевое слово оператор за которым следует символ. Унарный оператор имеет один операнд, а бинарный оператор — два. Когда определён как метод-член, то левый операнд привязывается к неявному указателю this (a.operator+(b)). Как ненадлежащий оператор — оба явно указаны (operator+(a, b)). метод-членлевый операнд привязывается к неявному указателю this (a.operator+(b)). Как ненадлежащий оператороба явно указаны (operator+(a, b))

Перегружаемые+ - * / % ^& | ~ ! = < >+= -= *= /= << >>== != <= >= && ||++ -- , ->* -> () []Неперегружаемые:: (Область видимости).* (Разыменование члена). (Точка)?: (Условный)Таблица 14.1. Разрешения операторов (См. с. 684)

2. Ограничения и этика

C++ предотвращает «вредительство в языке»: вы не можете создавать новые символы (например, **) или переопределять операции для встроенных типов (например, int + int). Приоритет и ассоциативность являются непреобразуемыми. Архитектурный принцип: классы, определяющие == безупречно интегрируются с алгоритмами библиотеки, такими как std::find.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>